
//导入nodejs-websocket
const ws=require('nodejs-websocket')
const {connect} = require("nodejs-websocket");
const PORT=3000

//记录当前连接上来的总数量
let count=0
//创建一个server ctrl+c停止服务
//每次只要有用户连接，函数就会被执行，会给当前连接的用户创建一个connect对象
const server=ws.createServer(connect =>{
    console.log('有用户连接上来了')
    count++
    connect.username=`用户${count}`
    //告诉所有用户有人加入了聊天室
    broadcast(`${connect.username}进入了聊天室`)

    //每当接受到用户传递过来的数据，text事件就会被触发
    connect.on('text',data=>{
        console.log('接受到用户的数据',data)
        //给用户一个相应的数据
        //对用户发送来的数据进行一定的处理
        broadcast(data)
    })

    //只要websocket连接断开了，close事件就会触发
    connect.on('close',()=>{
        console.log('连接断开了')
        count--
        broadcast(`${connect.username}离开了聊天室`)
    })

    //注册一个error事件
    connect.on('error',()=>{
        console.log('用户连接异常')
    })

})

//广播，给所有的用户发送消息
function broadcast(msg){
    //server.connections表示所有的用户
    server.connections.forEach(item=>{
        item.send(msg)
    })
}

server.listen(PORT,()=>{
    console.log('websocket服务器启动成功了，监听了端口'+PORT)
})